home *** CD-ROM | disk | FTP | other *** search
/ Aminet 41 / Aminet 41 (2001)(Schatztruhe)[!][Feb 2001].iso / Aminet / comm / tcp / rxsocket.lha / rxsocket / examples / whois.rexx < prev   
OS/2 REXX Batch file  |  2000-11-28  |  2KB  |  69 lines

  1. /*whois.rexx/1.0 - simple whois client with localization support */
  2.  
  3. signal on break_c
  4.  
  5. l="rmh.library";if ~show("L",l) then;if ~addlib(l,0,-30) then exit
  6. l="locale.library";if ~show("L",l) then;if ~addlib(l,0,-30) then exit
  7. prg=ProgramName("NOEXT")
  8. call getStrings
  9. if ~open(stderr,"CONSOLE:","W") then stderr="STDOUT"
  10. if AddLibrary("rexxsupport.library","rxsocket.library")~=0 then call err strings.ERRCANTFIND "'"result"'",1
  11.  
  12. parm.0.value="rs.internic.net"
  13. if ~RMH_ReadArgs("HOST/K,TO/K,KEY/A/F") then do
  14.     call PrintFault()
  15.     exit
  16. end
  17.  
  18. if parm.1.flag then do
  19.     if ~open(out,parm.1.value,"W") then do
  20.         call PrintFault()
  21.         exit
  22.     end
  23. end
  24. else out="STDOUT"
  25.  
  26. s=socket("INET","STREAM")
  27. if s<0 then call err strings.ERRNOSOCKECT
  28.  
  29. remote.addraddr=resolve(parm.0.value)
  30. if remote.addraddr=="-1" then call err "strings.ERRNOHOST" "<"parm.0.value">",0
  31. remote.addrport=43
  32. if connect(s,"REMOTE")<0 then call err strings.ERRCANTCONNECT "<"parm.0.value">"
  33.  
  34. req="WHOIS" parm.2.value"D0A"x
  35. if send(s,req)~=length(req) then call err strings.ERRSEND
  36.  
  37. call writeln(out,strings.MSGRESULT "'"parm.2.value"'")
  38.  
  39. r=1
  40. do while r>0
  41.     r=recv(s,"BUF",256)
  42.     if r>0 then call writech(out,buf)
  43. end
  44. if r<0 then call err strings.ERRRECV
  45. exit
  46.  
  47. break_c:
  48.     say
  49.     call err "break"
  50.     exit
  51.  
  52. err:
  53. parse arg msg,ntdoerr
  54.     if ntdoerr~=0 then msg=msg "("ErrorString()")"
  55.     call writeln(stderr,prg":" msg)
  56.     exit
  57.  
  58. getStrings: procedure expose prg strings.
  59.     catalog=OpenCatalog(prg".catalog","english",0)
  60.     strings.ERRCANTFIND=GetCatalogStr(catalog,1,"can't find")
  61.     strings.ERRNOSOCKET=GetCatalogStr(catalog,2,"can't create socket")
  62.     strings.ERRNOHOST=GetCatalogStr(catalog,3,"host not found")
  63.     strings.ERRCANTCONNECT=GetCatalogStr(catalog,4,"can't connect to")
  64.     strings.ERRSEND=GetCatalogStr(catalog,5,"error while sending request")
  65.     strings.MSGRESULT=GetCatalogStr(catalog,6,"Whois results for")
  66.     strings.ERRRECV=GetCatalogStr(catalog,7,"error while receiving")
  67.     call CloseCatalog(catalog);
  68.     return
  69.